#include<bits/stdc++.h>
using namespace std;
int dp[21][500];//dp[x][y]=1表示 x条直线可以形成y个交点

int main() {
    for (int i = 0; i <= 20; i++) {
        dp[i][0] = 1;//dp[i][0]=1表示 i条直线可以形成0个交点  都平行
    }
    for (int i = 1; i <= 20; i++) {
        for (int j = 0; j <= i * (i + 1) / 2; j++) {
            if (dp[i][j] == 1) {//dp[i][j]=1表示 i条直线可以形成j个交点
                for (int k = 1; k + i <= 20; k++) {
                    //k条平行直线于i条直线都不相交 增加了k*i交点
                    dp[i + k][j + i * k] = 1;
                }

            }
        }
    }
    int n;
    while (cin >> n) {
        for (int j = 0; j <= n * (n + 1) / 2; j++) {
            if (dp[n][j] == 1) {
                cout << j << " ";
            }
        }
        cout << endl;
    }


    return 0;
}